<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>EnTech FPK: CompoundFilter&lt; Input, Output &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">EnTech FPK
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">FRC Programming Kit by the EnTech 281 GreenVillains</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_compound_filter-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">CompoundFilter&lt; Input, Output &gt; Class Template Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_compound_filter_8hpp_source.html">CompoundFilter.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for CompoundFilter&lt; Input, Output &gt;:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_compound_filter.png" usemap="#CompoundFilter&lt; Input, Output &gt;_map" alt=""/>
  <map id="CompoundFilter&lt; Input, Output &gt;_map" name="CompoundFilter&lt; Input, Output &gt;_map">
<area href="class_filter.html" alt="Filter&lt; Input, Output &gt;" shape="rect" coords="0,0,198,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a49d4d37582f053a90423cbbc99f8fbf6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#a49d4d37582f053a90423cbbc99f8fbf6">CompoundFilter</a> (boost::shared_ptr&lt; const <a class="el" href="class_filter.html">Filter</a>&lt; Input, Output &gt; &gt; filter=GenerateCastFilter())</td></tr>
<tr class="separator:a49d4d37582f053a90423cbbc99f8fbf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c2fac0834c1e62fd8080cedbb0c53b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#a9c2fac0834c1e62fd8080cedbb0c53b6">CompoundFilter</a> (const <a class="el" href="class_filter.html">Filter</a>&lt; Input, Output &gt; *filter, bool canDeleteFilter=false)</td></tr>
<tr class="separator:a9c2fac0834c1e62fd8080cedbb0c53b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8aec9384fdbfce00f6098d2ee9f45a6b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#a8aec9384fdbfce00f6098d2ee9f45a6b">CompoundFilter</a> (const <a class="el" href="class_filter.html">Filter</a>&lt; Input, Output &gt; &amp;filter)</td></tr>
<tr class="separator:a8aec9384fdbfce00f6098d2ee9f45a6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6624d0e6b2eccafc3275985520b47523"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#a6624d0e6b2eccafc3275985520b47523">~CompoundFilter</a> ()</td></tr>
<tr class="separator:a6624d0e6b2eccafc3275985520b47523"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2a4357f774a94412fd90007796f5b94"><td class="memItemLeft" align="right" valign="top">virtual Output&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#ac2a4357f774a94412fd90007796f5b94">Apply</a> (const Input &amp;input) const </td></tr>
<tr class="separator:ac2a4357f774a94412fd90007796f5b94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52480bdab6a8c4c905df9a8d6cad7e04"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#a52480bdab6a8c4c905df9a8d6cad7e04">AddFilter</a> (boost::shared_ptr&lt; const <a class="el" href="class_filter.html">Filter</a>&lt; Input &gt; &gt; filter)</td></tr>
<tr class="separator:a52480bdab6a8c4c905df9a8d6cad7e04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0cb1ef3ede7eb4e359f2b85d111678d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#aa0cb1ef3ede7eb4e359f2b85d111678d">AddFilter</a> (const <a class="el" href="class_filter.html">Filter</a>&lt; Input &gt; *filter, bool canDeleteFilter=false)</td></tr>
<tr class="separator:aa0cb1ef3ede7eb4e359f2b85d111678d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef3bf5161d685db0c609278cc996df4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#aef3bf5161d685db0c609278cc996df4a">AddFilter</a> (boost::shared_ptr&lt; const <a class="el" href="class_filter.html">Filter</a>&lt; Output &gt; &gt; filter)</td></tr>
<tr class="separator:aef3bf5161d685db0c609278cc996df4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4295fbe2db4d56eec2a71e99238e3e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#ad4295fbe2db4d56eec2a71e99238e3e1">AddFilter</a> (const <a class="el" href="class_filter.html">Filter</a>&lt; Output &gt; *filter, bool canDeleteFilter=false)</td></tr>
<tr class="separator:ad4295fbe2db4d56eec2a71e99238e3e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1224b3e5bac91a3b01fa5c56655b65a0"><td class="memTemplParams" colspan="2">template&lt;typename TFilter &gt; </td></tr>
<tr class="memitem:a1224b3e5bac91a3b01fa5c56655b65a0"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_compound_filter.html#a1224b3e5bac91a3b01fa5c56655b65a0">AddFilter</a> (const TFilter &amp;filter)</td></tr>
<tr class="separator:a1224b3e5bac91a3b01fa5c56655b65a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_filter"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_filter')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_filter.html">Filter&lt; Input, Output &gt;</a></td></tr>
<tr class="memitem:a26282b9a6450620f843ad860944a2e95 inherit pub_methods_class_filter"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_filter.html#a26282b9a6450620f843ad860944a2e95">~Filter</a> ()</td></tr>
<tr class="separator:a26282b9a6450620f843ad860944a2e95 inherit pub_methods_class_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Input, typename Output = Input&gt;<br/>
class CompoundFilter&lt; Input, Output &gt;</h3>

<p>The <a class="el" href="class_compound_filter.html">CompoundFilter</a> template class chains multiple Filters to act as a compounded filter.</p>
<p>This is what happens when you apply this filter to an input object.</p>
<ul>
<li>First, this will apply the added preconvert filters (filters that take an object of type Input and output an object of type Input).</li>
<li>Next, this will apply the conversion filter passed to the constructor (the filter that takes an object of type Input and outputs an object of type Output).</li>
<li>Finally, this will apply the added postconvert filters (filters that take an object of type Output and output an object of type Output).</li>
</ul>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Input</td><td>The type of the input object. </td></tr>
    <tr><td class="paramname">Output</td><td>The type of the output object. </td></tr>
  </table>
  </dd>
</dl>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a49d4d37582f053a90423cbbc99f8fbf6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::<a class="el" href="class_compound_filter.html">CompoundFilter</a> </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; const <a class="el" href="class_filter.html">Filter</a>&lt; Input, Output &gt; &gt;&#160;</td>
          <td class="paramname"><em>filter</em> = <code>GenerateCastFilter()</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructor for <a class="el" href="class_compound_filter.html">CompoundFilter</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A shared pointer to the conversion filter. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a9c2fac0834c1e62fd8080cedbb0c53b6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::<a class="el" href="class_compound_filter.html">CompoundFilter</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_filter.html">Filter</a>&lt; Input, Output &gt; *&#160;</td>
          <td class="paramname"><em>filter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteFilter</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructor for <a class="el" href="class_compound_filter.html">CompoundFilter</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A pointer to the conversion filter. </td></tr>
    <tr><td class="paramname">canDeleteFilter</td><td>If the <a class="el" href="class_compound_filter.html">CompoundFilter</a> can delete the <a class="el" href="class_filter.html">Filter</a> so long as it functions correctly. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8aec9384fdbfce00f6098d2ee9f45a6b"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::<a class="el" href="class_compound_filter.html">CompoundFilter</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_filter.html">Filter</a>&lt; Input, Output &gt; &amp;&#160;</td>
          <td class="paramname"><em>filter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructor for <a class="el" href="class_compound_filter.html">CompoundFilter</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A reference to the conversion filter. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6624d0e6b2eccafc3275985520b47523"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::~<a class="el" href="class_compound_filter.html">CompoundFilter</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Destructor for <a class="el" href="class_compound_filter.html">CompoundFilter</a>. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a52480bdab6a8c4c905df9a8d6cad7e04"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::AddFilter </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; const <a class="el" href="class_filter.html">Filter</a>&lt; Input &gt; &gt;&#160;</td>
          <td class="paramname"><em>filter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a <a class="el" href="class_filter.html">Filter</a>.</p>
<p>This overload adds a preconvert filter (one that is applied before the conversion filter).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A shared pointer to the filter to be added. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa0cb1ef3ede7eb4e359f2b85d111678d"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::AddFilter </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_filter.html">Filter</a>&lt; Input &gt; *&#160;</td>
          <td class="paramname"><em>filter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteFilter</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a <a class="el" href="class_filter.html">Filter</a>.</p>
<p>This overload adds a preconvert filter (one that is applied before the conversion filter).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A pointer to the filter to be added. </td></tr>
    <tr><td class="paramname">canDeleteFilter</td><td>If the <a class="el" href="class_compound_filter.html">CompoundFilter</a> can delete the <a class="el" href="class_filter.html">Filter</a> so long as it functions correctly. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aef3bf5161d685db0c609278cc996df4a"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::AddFilter </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; const <a class="el" href="class_filter.html">Filter</a>&lt; Output &gt; &gt;&#160;</td>
          <td class="paramname"><em>filter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a <a class="el" href="class_filter.html">Filter</a>.</p>
<p>This overload adds a postconvert filter (one that is applied after the conversion filter).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A shared pointer to the filter to be added. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad4295fbe2db4d56eec2a71e99238e3e1"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::AddFilter </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_filter.html">Filter</a>&lt; Output &gt; *&#160;</td>
          <td class="paramname"><em>filter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteFilter</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a <a class="el" href="class_filter.html">Filter</a>.</p>
<p>This overload adds a postconvert filter (one that is applied after the conversion filter).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A pointer to the filter to be added. </td></tr>
    <tr><td class="paramname">canDeleteFilter</td><td>If the <a class="el" href="class_compound_filter.html">CompoundFilter</a> can delete the <a class="el" href="class_filter.html">Filter</a> so long as it functions correctly. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a1224b3e5bac91a3b01fa5c56655b65a0"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<div class="memtemplate">
template&lt;typename TFilter &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::AddFilter </td>
          <td>(</td>
          <td class="paramtype">const TFilter &amp;&#160;</td>
          <td class="paramname"><em>filter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Add a <a class="el" href="class_filter.html">Filter</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">filter</td><td>A reference to the filter to be added. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac2a4357f774a94412fd90007796f5b94"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Input, typename Output = Input&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual Output <a class="el" href="class_compound_filter.html">CompoundFilter</a>&lt; Input, Output &gt;::Apply </td>
          <td>(</td>
          <td class="paramtype">const Input &amp;&#160;</td>
          <td class="paramname"><em>input</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Apply the added filters to an input.</p>
<p>This will first apply the preconvert filters (filters that take an object of type Input and output an object of type Input). Next, this will apply the conversion filter (the filter that takes an object of type Input and outputs an object of type Output). Finally, this will apply the postconvert filters (filters that take an object of type Output and output an object of type Output).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">input</td><td>A reference to the input (which will not get modified). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The output of the filtered input. </dd></dl>

<p>Implements <a class="el" href="class_filter.html#a377c1d2a9400698fdf5a41d293fd32b8">Filter&lt; Input, Output &gt;</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>C:/Users/Sam/Projects/FRC/Libraries/Fpk/Entech-Fpk-Subscribers/Entech-Fpk/Filters/<a class="el" href="_compound_filter_8hpp_source.html">CompoundFilter.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Aug 12 2013 16:46:50 for EnTech FPK by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>
